<?php
	/**
	* Klass ASSIGNMENT CONTROLLER - Används för att admin ska kunna registrera ett uppdrag.
	* Controllern bestämmer vad som ska skrivas ut till användaren genom att "prata" med vyn och handlern.
	*/
	class AssignmentController
	{
		public function DoAssignmentControll(Database $database, LoginHandler $loginHandler)
		{
			// Skapar objekt.
			$validate = new Validate();
			$assignmentHandler = new AssignmentHandler($database, $validate);
			$assignmentView = new AssignmentView();
			$messageNumber = array();

			// Kontrollerar om admin har försökt att registrera ett nytt uppdrag.
			if ($assignmentView->TriedToAddAssignment()) {

				// Hämtar ut informationen som admin har skrivit in i formuläret.
				$assignment = new Assignment();
				$assignmentName = $assignmentView->GetAssignmentName();
				$assignmentStartDate = $assignmentView->GetStartDate();
				$assignmentEndDate = $assignmentView->GetEndDate();
				$assignmentCustomerID = $assignmentView->GetCustomerID();

				// Sätter in den uthämtade informationen i det nya uppdrags-objektet.
				$assignment->assignmentName = $assignmentName;
				$assignment->assignmentStartDate = $assignmentStartDate;
				$assignment->assignmentEndDate = $assignmentEndDate;
				$assignment->assignmentCustomerID = $assignmentCustomerID;

				// Validerar indatan från formuläret och lägger in eventuella felmeddelanden i variabeln $messageNumber.
				$messageNumber = $assignmentHandler->DataValidator($assignmentName, $assignmentStartDate, $assignmentEndDate);
				
				// Om inga felmeddelanden har lagts in i variabeln $messageNumber så har registreringen lyckats och vi skriver ut ett rättmeddelande och 
				// Efter det skickas all information om uppdraget och den kunden som är vald till handlern som sätter in det i databasen. Och där ifrån får vi ett uppdrags ID. 
				if (empty($messageNumber)) {
					$messageNumber[] = AssignmentView::REG_SUCCESS; 
					$newAssignmentID = $assignmentHandler->AddNewAssignment($assignment);
					$newACID = $assignmentHandler->AddNewAssignmentCustomer($assignment->assignmentCustomerID, $newAssignmentID);	
				}		
			}
			// Hämtar ut meddelanden som ska skrivas ut.
			$messageHTML = $assignmentView->MessageHolder($messageNumber);

			// Vi hämtar ut alla kunder och skickar med dom till vår dropdown som skapas i vyn. Sedan skickar vi med meddelanden och dropdow menyn i vår content.
			$existingCustomers = $loginHandler->GetAllCustomers();
			$existingCustomersDropDown = $assignmentView->DoExistingCustomerChoiceDropDown($existingCustomers);
			$content = $assignmentView->DoCreateAssignment($messageHTML, $existingCustomersDropDown);

			return $content;
		}
	}
?>